package com.ibeeking.found.content.b.rest.service;


import cn.binarywang.wx.miniapp.bean.live.WxMaCreateRoomResult;
import cn.binarywang.wx.miniapp.bean.live.WxMaLiveGoodInfo;
import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult;
import cn.binarywang.wx.miniapp.bean.live.WxMaLiveRoomInfo;

import java.util.List;

/**
 * 微信直播服务
 *
 * @Author ibeeking
 */
public interface IWxBroadcastService {
    /**
     * 创建直播间
     *
     * @param wxMaLiveRoomInfo
     * @return
     */
    WxMaCreateRoomResult createBroadcastRoom(WxMaLiveRoomInfo wxMaLiveRoomInfo);

    /**
     * 删除直播间
     *
     * @param roomId
     * @return
     */
    boolean deleteBroadcastRoom(Integer roomId);

    /**
     * 获取直播间列表
     *
     * @return
     */
    List<WxMaLiveResult.RoomInfo> getLiveRoomList();

    /**
     * 获取直播间信息
     *
     * @param roomId
     * @return
     */
    WxMaLiveResult.RoomInfo getLiveRoomInfo(Integer roomId);

    /**
     * 获取直播间列表
     *
     * @param roomId       直播间Id
     * @param startSection 起始拉取视频，0表示从第一个视频片段开始拉取
     * @param limit        每次拉取的数量
     * @return List<WxMaLiveResult.LiveReplay>
     * @parm roomId 直播间ID
     */
    List<WxMaLiveResult.LiveReplay> getLiveRoomReplay(Integer roomId, Integer startSection, Integer limit);

    /**
     * 导入直播间商品
     *
     * @param roomId   直播间Id
     * @param goodsIds 数组列表，可传入多个，里面填写 商品 ID
     * @return WxBroadcastVO
     * @parm roomId 直播间ID
     */
    boolean addGoodsToLiveRoom(Integer roomId, List<Integer> goodsIds);

    /**
     * 获取直播间推流地址URL
     *
     * @param roomId 直播间Id
     * @return
     */
    String getLiveRoomPushStreamUrl(Integer roomId);

    /**
     * 获取直播间分享二维码地址URL
     *
     * @param roomId 直播间ID
     * @param params
     * @return
     */
    String getLiveRoomShareQrcodeUrl(Integer roomId, String params);


    /**
     * ==================================================================================
     * 直播间商品信息维护
     * =================================================================================
     **/

    /**
     * 查询直播间商品
     *
     * @param pageNo    分页条数起点
     * @param pageCount 分页大小，默认30，不超过100
     * @param status    商品状态，0：未审核。1：审核中，2：审核通过，3：审核驳回
     * @return WxMaLiveResult.Goods
     */
    List<WxMaLiveResult.Goods> getGoodsList(Integer pageNo, Integer pageCount, Integer status);

    /**
     * 查询商品信息
     *
     * @param goodsId 商品ID
     * @return BroadcastGoodsVO
     */
    WxMaLiveResult.Goods getGoodsInfo(Integer goodsId);

    /**
     * 添加直播间商品
     *
     * @param wxMaLiveGoodInfo 商品信息
     * @return
     */
    WxMaLiveResult addGoods(WxMaLiveGoodInfo wxMaLiveGoodInfo);

    /**
     * 删除直播间商品
     *
     * @param goodsId 商品ID
     * @return
     */
    boolean delGoods(Integer goodsId);

    /**
     * 审核直播间商品
     *
     * @param goodsId 审核id
     * @return
     */
    String auditGoods(Integer goodsId);
}
